/* $Id$ */
/** @file
 * VBox/Frontends/Common - X11 keyboard driver translation tables (XT scan
 *                         code mappings for XKB key names).
 */

/*
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

/*
 * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
 * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
 * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
 * a choice of LGPL license versions is made available with the language indicating
 * that LGPLv2 or any later version may be used, or where a choice of which version
 * of the LGPL is applied is otherwise unspecified.
 */

#ifndef ___VBox_keyboard_tables_h
# error This file must be included from within keyboard-tables.h
#endif /* ___VBox_keyboard_tables_h */

enum { XKB_NAME_SIZE = 4 };

/**
 * This table contains a list of mappings of XKB key names to XT scan codes.
 */
struct
{
    const char cszName[XKB_NAME_SIZE];
    unsigned uScan;
} xkbMap[] =
{
    { "ESC", 0x1 },
    { "AE01", 0x2 },
    { "AE02", 0x3 },
    { "AE03", 0x4 },
    { "AE04", 0x5 },
    { "AE05", 0x6 },
    { "AE06", 0x7 },
    { "AE07", 0x8 },
    { "AE08", 0x9 },
    { "AE09", 0xa },
    { "AE10", 0xb },
    { "AE11", 0xc },
    { "AE12", 0xd },
    { "BKSP", 0xe },
    { "TAB", 0xf },
    { "AD01", 0x10 },
    { "AD02", 0x11 },
    { "AD03", 0x12 },
    { "AD04", 0x13 },
    { "AD05", 0x14 },
    { "AD06", 0x15 },
    { "AD07", 0x16 },
    { "AD08", 0x17 },
    { "AD09", 0x18 },
    { "AD10", 0x19 },
    { "AD11", 0x1a },
    { "AD12", 0x1b },
    { "RTRN", 0x1c },
    { "LCTL", 0x1d },
    { "AC01", 0x1e },
    { "AC02", 0x1f },
    { "AC03", 0x20 },
    { "AC04", 0x21 },
    { "AC05", 0x22 },
    { "AC06", 0x23 },
    { "AC07", 0x24 },
    { "AC08", 0x25 },
    { "AC09", 0x26 },
    { "AC10", 0x27 },
    { "AC11", 0x28 },
    { "AC12", 0x2b },
    { "TLDE", 0x29 },
    { "LFSH", 0x2a },
    { "BKSL", 0x2b },
    { "AB01", 0x2c },
    { "AB02", 0x2d },
    { "AB03", 0x2e },
    { "AB04", 0x2f },
    { "AB05", 0x30 },
    { "AB06", 0x31 },
    { "AB07", 0x32 },
    { "AB08", 0x33 },
    { "AB09", 0x34 },
    { "AB10", 0x35 },
    { "RTSH", 0x36 },
    { "KPMU", 0x37 },
    { "LALT", 0x38 },
    { "SPCE", 0x39 },
    { "CAPS", 0x3a },
    { "FK01", 0x3b },
    { "FK02", 0x3c },
    { "FK03", 0x3d },
    { "FK04", 0x3e },
    { "FK05", 0x3f },
    { "FK06", 0x40 },
    { "FK07", 0x41 },
    { "FK08", 0x42 },
    { "FK09", 0x43 },
    { "FK10", 0x44 },
    { "NMLK", 0x145 },
    { "SCLK", 0x46 },
    { "KP7", 0x47 },
    { "KP8", 0x48 },
    { "KP9", 0x49 },
    { "KPSU", 0x4a },
    { "KP4", 0x4b },
    { "KP5", 0x4c },
    { "KP6", 0x4d },
    { "KPAD", 0x4e },
    { "KP1", 0x4f },
    { "KP2", 0x50 },
    { "KP3", 0x51 },
    { "KP0", 0x52 },
    { "KPDL", 0x53 },
    { "KPPT", 0x7e },
    { "LVL3", 0x138 },
    { "LSGT", 0x56 },
    { "FK11", 0x57 },
    { "FK12", 0x58 },
    { "AB11", 0x73 },
    { "KATA", 0x0 },
    { "HIRA", 0x0 },
    { "HENK", 0x79 },
    { "HKTG", 0x70 },
    { "MUHE", 0x7b },
    { "HZTG", 0x29 },
    { "JPCM", 0x0 },
    { "KPEN", 0x11c },
    { "RCTL", 0x11d },
    { "KPDV", 0x135 },
    { "PRSC", 0x137 },
    { "RALT", 0x138 },
    { "ALGR", 0x138 },
    { "LNFD", 0x0 },
    { "HOME", 0x147 },
    { "UP", 0x148 },
    { "PGUP", 0x149 },
    { "LEFT", 0x14b },
    { "RGHT", 0x14d },
    { "END", 0x14f },
    { "DOWN", 0x150 },
    { "PGDN", 0x151 },
    { "INS", 0x152 },
    { "DELE", 0x153 },
    { "I120", 0x0 },
    { "MUTE", 0x120 },
    { "VOL-", 0x12e },
    { "VOL+", 0x130 },
    { "POWR", 0x15e },
    { "KPEQ", 0x0 },
    { "I126", 0x0 },
    { "PAUS", 0x45 },
    { "I128", 0x0 },
    { "I129", 0x7e },
    { "KPPT", 0x7e },
    { "HNGL", 0xf2 },
    { "HJCV", 0xf1 },
    { "AE13", 0x7d },
    { "LWIN", 0x15b },
    { "LMTA", 0x15b },
    { "RWIN", 0x15c },
    { "RMTA", 0x15c },
    { "COMP", 0x15d },
    { "MENU", 0x15d },
    { "STOP", 0x168 },
    { "AGAI", 0x105 },
    { "PROP", 0x106 },
    { "UNDO", 0x107 },
    { "FRNT", 0x10c },
    { "COPY", 0x118 },
    { "OPEN", 0x65 },
    { "PAST", 0x10a },
    { "FIND", 0x110 },
    { "CUT", 0x117 },
    { "HELP", 0x175 },
    { "I147", 0x0 },
    { "I148", 0x0 },
    { "I149", 0x0 },
    { "I150", 0x15f },
    { "I151", 0x163 },
    { "I152", 0x0 },
    { "I153", 0x119 },
    { "I154", 0x0 },
    { "I155", 0x0 },
    { "I156", 0x0 },
    { "I157", 0x0 },
    { "I158", 0x0 },
    { "I159", 0x0 },
    { "I160", 0x120 },
    { "I161", 0x0 },
    { "I162", 0x122 },
    { "I163", 0x16c },
    { "I164", 0x124 },
    { "I165", 0x15f },
    { "I166", 0x16a },
    { "I167", 0x169 },
    { "I168", 0x0 },
    { "I169", 0x0 },
    { "I170", 0x0 },
    { "I171", 0x119 },
    { "I172", 0x122 },
    { "I173", 0x110 },
    { "I174", 0x12e },
    { "I175", 0x0 },
    { "I176", 0x130 },
    { "I177", 0x0 },
    { "I178", 0x0 },
    { "I179", 0x0 },
    { "I180", 0x132 },
    { "I181", 0x167 },
    { "I182", 0x140 },
    { "I183", 0x0 },
    { "I184", 0x0 },
    { "I185", 0x10b },
    { "I186", 0x18b },
    { "I187", 0x0 },
    { "I188", 0x0 },
    { "I189", 0x0 },
    { "I190", 0x105 },
    { "FK13", 0x0 },
    { "FK14", 0x0 },
    { "FK15", 0x0 },
    { "FK16", 0x0 },
    { "FK17", 0x0 },
    { "FK18", 0x0 },
    { "FK19", 0x0 },
    { "FK20", 0x0 },
    { "FK21", 0x0 },
    { "FK22", 0x0 },
    { "FK23", 0x0 },
    { "FK24", 0x0 },
    { "MDSW", 0x138 },
    { "ALT", 0x0 },
    { "META", 0x0 },
    { "SUPR", 0x0 },
    { "HYPR", 0x0 },
    { "I208", 0x122 },
    { "I209", 0x122 },
    { "I210", 0x0 },
    { "I211", 0x0 },
    { "I212", 0x0 },
    { "I213", 0x0 },
    { "I214", 0x140 },
    { "I215", 0x122 },
    { "I216", 0x169 },
    { "I217", 0x0 },
    { "I218", 0x137 },
    { "I219", 0x0 },
    { "I220", 0x0 },
    { "I221", 0x0 },
    { "I222", 0x0 },
    { "I223", 0x0 },
    { "I224", 0x0 },
    { "I225", 0x165 },
    { "I226", 0x0 },
    { "I227", 0x0 },
    { "I228", 0x0 },
    { "I229", 0x165 },
    { "I230", 0x166 },
    { "I231", 0x167 },
    { "I232", 0x168 },
    { "I233", 0x169 },
    { "I234", 0x16a },
    { "I235", 0x16b },
    { "I236", 0x16c },
    { "I237", 0x16d },
    { "I238", 0x0 },
    { "I239", 0x143 },
    { "I240", 0x141 },
    { "I241", 0x0 },
    { "I242", 0x157 },
    { "I243", 0x105 },
    { "I244", 0x0 },
    { "I245", 0x0 },
    { "I246", 0x0 },
    { "I247", 0x0 },
    { "I248", 0x0 },
    { "I249", 0x0 },
    { "I250", 0x0 },
    { "I251", 0x0 },
    { "I252", 0x0 },
    { "I253", 0x0 }
};
